#ifndef TestDesignExtractorWithPKB_h
#define TestDesignExtractorWithPKB_h

#include "PKB.h"
#include "DesignExtractor.h"
#include <cppunit/extensions/HelperMacros.h>
#define MAX_CONTAINER 10
class DesignExtractorWithPKBTest : public CPPUNIT_NS::TestFixture {
	private:
		PKB *pkb;
		DesignExtractor *de;
		
		CPPUNIT_TEST_SUITE( DesignExtractorWithPKBTest );
		CPPUNIT_TEST( testEnv1 );
		CPPUNIT_TEST( testEnv2 );
		CPPUNIT_TEST( testEnv3 );
		CPPUNIT_TEST( testEnv4 );
		CPPUNIT_TEST( testEnv5 );
		CPPUNIT_TEST( testUpdateProcUMStatus );
		CPPUNIT_TEST( testUpdateLineUMStatus );
		CPPUNIT_TEST( testUpdateNextStatus );
		CPPUNIT_TEST( testUpdateStarRelations );
		CPPUNIT_TEST( testUpdateEarliestCommonParent );
		CPPUNIT_TEST( testUpdateNextLastModified );
		CPPUNIT_TEST( testUpdateNextBipStatus );
		CPPUNIT_TEST_SUITE_END();

		void createEnv1();
		void createEnv2();
		void createEnv3();
		void createEnv4();
		void createEnv5();
		Type::Map::ParentMatrix prepareCommMatrixFromArray( int[][MAX_CONTAINER], int[], int );

	public:
		void setUp();
		void tearDown();

		void testEnv1();
		void testEnv2();
		void testEnv3();
		void testEnv4();
		void testEnv5();
		void testUpdateProcUMStatus();
		void testUpdateLineUMStatus();
		void testUpdateNextStatus();
		void testUpdateStarRelations();
		void testUpdateEarliestCommonParent();
		void testUpdateNextLastModified();
		void testUpdateNextBipStatus();

};
#endif